In distributed architectures, processors may communicate packets to one another through a switch. Some architectures use an N-by-(N−1) switch, which has a separate switch port interface for each processor. Thus, congestion of one interface does not affect other interfaces. N-by-(N−1) switches, however, are typically expensive. Moreover, it is sometimes difficult for N-by-(N−1) switches to accommodate additional processors because additional processors may require additional switch port interfaces.
Other architectures use a non-N-by-(N−1) switch, where processors share a switch port interface. Non-N-by-(N−1) switches, however, may experience head-of-line blocking problems. For example, a processor may be congested and unable to accept more packets. Packets for the processor may block the switch port interface that is shared by other processors. Until the waiting packets are taken from the switch port interface by the processor, packets that arrive after the waiting packets cannot be taken by the other processors. This causes a packet buildup in the shared switch port interface, also referred to as head-of-line blocking. Accordingly, congestion at one processor may deteriorate service for other processors that share the same switch port interface.